home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 233 / Computer Shopper 233 / ComputerShopperDVD233.iso / mpf / eng / shared / agentdui.cab / scui.dll / HTML / VSO.VBS < prev    next >
Encoding:
Text File  |  2005-07-27  |  12.8 KB  |  500 lines

  1. '////////////////////////////////////////////////////////////////////////////
  2. '// vso.vbs
  3. '// Contains the VbScript code used by vsoinst.htm and Dashboard UI pages
  4. '// Dependencies: file:subinfodata.vbs,
  5. '//                  object:g_localObjOS, object:g_localObjExternal, 
  6. '//                  object:g_localObjFS, object:g_localObjReg, object:g_localObjInstaller
  7. '////////////////////////////////////////////////////////////////////////////
  8. '// Created:    
  9. '// Creator:    
  10. '// Developers: Anand Revashetti, Ramy Eldesoky
  11. '////////////////////////////////////////////////////////////////////////////
  12. Option Explicit
  13. '////////////////////////////////////////////////////////////////////////////////////
  14. '// Created: 7/24/03
  15. '// Creator: Ramy Eldesoky
  16. '////////////////////////////////////////////////////////////////////////////////////
  17. '// Checks and retruns the VS expiry information. The
  18. '// bExpired = True if objSubInfo.ExpiryDate is overdue.
  19. '// bPerpetual = True if objSubInfo.Perpetual is true
  20. '// bNoDie = True if objAppInfo.No_Die is true
  21. '////////////////////////////////////////////////////////////////////////////////////
  22. Function GetVirusScanExpiryInfo( ByRef bExpired, ByRef bPerpetual, ByRef bNoDie)
  23. '{
  24.     Const    sLIC = "{27CDC360-101B-48ff-96F0-8580AD849AAD}"
  25.     Const    CLSID_MCSUBMGR = "{9BE8D7B2-329C-442A-A4AC-ABA9D7572602}"
  26.  
  27.     Dim        objMcSubMgr, objSubInfo, objAppInfo
  28.  
  29.     GetVirusScanExpiryInfo = true
  30.     
  31.     '// Step 1    create the COM object
  32.     set objMcSubMgr = g_localObjExternal.CreateObject( CLSID_MCSUBMGR, sLIC, True )
  33.     
  34.     if IsValidObject( objMcSubMgr ) then
  35.     '{
  36.         ' Initialize the interface classes global data (SubInfoData.vbs)
  37.         call InitScriptAPI( objMcSubMgr )
  38.  
  39.         call GetAppInfo( CStr("VSO"), "", objAppInfo )
  40.         
  41.         if MCSUBDATA_SUCCESS = GetSubInfo( CStr("VSO"), "", objSubInfo ) and IsValidObject( objSubInfo ) then 
  42.         '{
  43.             dim sExpiryDate
  44.  
  45.             sExpiryDate = objSubInfo.ExpiryDate ' returns "YYYYMMDD" date string
  46.             
  47.             if 8 < Len(sExpiryDate) then
  48.             '{
  49.                 GetVirusScanExpiryInfo = false
  50.             '}
  51.             else
  52.             '{
  53.                 dim expiryDate, curDate
  54.  
  55.                 expiryDate = ParseDate( sExpiryDate )
  56.                 curDate = FormatDate()
  57.                 
  58.                 if IsDate( expiryDate ) then
  59.                 '{
  60.                     If (sExpiryDate - curDate) >= 0 Then
  61.                         bExpired = false
  62.                     else
  63.                         bExpired = true
  64.                     End If
  65.                 '}
  66.                 else
  67.                 '{
  68.                     GetVirusScanExpiryInfo = false
  69.                 '}
  70.                 end if
  71.             '}
  72.             end if
  73.  
  74.             bPerpetual = objSubInfo.Perpetual 
  75.             
  76.             bNoDie = false
  77.  
  78.             If IsValidObject(objAppInfo) Then 
  79.             '{            
  80.                 if objAppInfo.No_Die = "1" then
  81.                     bNoDie = true
  82.                 end if
  83.             '}
  84.             end if
  85.  
  86.             call FreeObject( objSubInfo )
  87.         '}
  88.         else
  89.         '{
  90.             GetVirusScanExpiryInfo = false
  91.         '}
  92.         end if
  93.  
  94.         call FreeObject( objAppInfo )
  95.         call DeinitScriptAPI()
  96.         call FreeObject( objMcSubMgr )
  97.     '}
  98.     else
  99.     '{
  100.         GetVirusScanExpiryInfo = false
  101.     '}
  102.     end if
  103. '}
  104. End Function
  105. '////////////////////////////////////////////////////////////////////////////////////
  106. '// 1 expired (and perpetual and no_die flag is False)
  107. '// 2 expired (perpetual = true and no_die = false)
  108. '// 3 expired (perpetual = false and no_die = true)
  109. '// 4 expired (perpetual = true and no_die = true)
  110. '////////////////////////////////////////////////////////////////////////////////////
  111. Function IsVSOExpired()
  112. '{
  113.     dim bExpired, bPerpetual, bNoDie
  114.     
  115.     IsVSOExpired = 1
  116.     
  117.     if not GetVirusScanExpiryInfo( bExpired, bPerpetual, bNoDie ) then
  118.         exit function ' error case; show the product as expired
  119.     end if
  120.     
  121.     if bExpired then
  122.     '{
  123.         if bPerpetual then
  124.             IsVSOExpired = 2
  125.             if bNoDie then
  126.                 IsVSOExpired = 4
  127.             end if
  128.         else
  129.             IsVSOExpired = 1
  130.  
  131.             if bNoDie then
  132.                 IsVSOExpired = 3
  133.             end if
  134.         end if
  135.     '}
  136.     else
  137.     '{
  138.         IsVSOExpired = 0
  139.     '}
  140.     end if
  141. '}
  142. end function
  143. '////////////////////////////////////////////////////////////////////////
  144. '// Checks whether the VSO is perpetual or the application is set to nodie state
  145. '////////////////////////////////////////////////////////////////////////
  146. Function WillVSOProductExpire(objAppInfo, objSubInfo)
  147. '{
  148.     WillVSOProductExpire = True
  149.  
  150.     If IsValidObject(objSubInfo) Then 
  151.     '{
  152.         if objSubInfo.Perpetual then
  153.             WillVSOProductExpire = False
  154.         else
  155.             If IsValidObject(objAppInfo) Then 
  156.             '{            
  157.                 if objAppInfo.No_Die = "1" then
  158.                     WillVSOProductExpire = False
  159.                 end if
  160.             '}
  161.             end if
  162.         end if
  163.     '}
  164.     end if
  165.   
  166. '}
  167. End Function
  168. '////////////////////////////////////////////////////////////////////////////////////
  169. '// IsVSOEnabled(): Return Values.
  170. '//
  171. '// -1: Error Code
  172. '// 0: Application is not running
  173. '// 1: Application is running.
  174. '////////////////////////////////////////////////////////////////////////////////////
  175. Function IsVSOEnabled()
  176. '{
  177.     Dim    dwState, bTemp
  178.  
  179.     IsVSOEnabled = -1
  180.  
  181.     If not IsValidObject(g_localObjReg) Then
  182.         Exit Function
  183.     End If
  184.  
  185.     bTemp = g_localObjReg.Obfuscate
  186.  
  187.     g_localObjReg.Obfuscate = True
  188.     IsVSOEnabled = CLng(g_localObjReg.RegQueryValue( CStr("HKLM\Software\McAfee.com\Agent\Apps\VSO"), CStr("State") ))
  189.     g_localObjReg.Obfuscate = bTemp
  190. '}
  191. End Function
  192. '////////////////////////////////////////////////////////////////////////////////////
  193. Function VsShutdown()
  194. '{
  195.     Dim eResult
  196.  
  197.     eResult = gobjMcApp.ShutdownEx( AS_CLSID, 2 )
  198.     If 0 = eResult Then
  199.         eResult = 1
  200.     End If
  201.     call VsPrintState( "VsShutdown - Result is process id.", eResult )
  202. '}
  203. End Function
  204. '////////////////////////////////////////////////////////////////////////////////////
  205. Function VsPrintState( sOperation, eOperationResult )
  206. '{
  207.     Dim    eResult, NewState
  208.     Dim    sMsg
  209.  
  210.     eResult = gobjMcApp.GetState( AS_CLSID, NewState )
  211.     sMsg = "Operation: " & sOperation & " : Result = " & eOperationResult & vbCrLf & _
  212.                  "New State: " & NewState & vbCrLf
  213.     VerInfo.innerHTML = "<pre>" & sMsg & "</pre>"
  214. '}
  215. End Function
  216. '////////////////////////////////////////////////////////////////////////////////////
  217. '// 
  218. '// IsVSO4Installed()
  219. '// 
  220. '// Return Values:
  221. '// -2: If VSO is not installed.
  222. '// -1: Error code.
  223. '// 0: If Old VSO (3.X) is installed.
  224. '// 1: If VSO 4 is installed.
  225. '////////////////////////////////////////////////////////////////////////////////////
  226. Function IsVSO4Installed( objReg, objOS, objFS )
  227. '{
  228.     Const CLSID_MCVSSHLD    = "{692E988D-1057-4c57-8078-26CF7AE54263}" 
  229.  
  230.     Dim eResult
  231.     
  232.     IsVSO4Installed = -1
  233.  
  234.     if not IsValidObject (objOS) then 
  235.         Exit Function
  236.     End If
  237.  
  238.     IsVSO4Installed = -2
  239.  
  240.     eResult = objOS.IsObjectInstalled( CLSID_MCVSSHLD, "4,0,0,0" )
  241.  
  242.     Select Case eResult
  243.     '{
  244.     Case 0 '// MCINST_OS_NO_VERSION_INFO
  245.         Exit Function
  246.     Case 1 '// MCINST_OS_OLDER_VERSION_EXISTS
  247.         IsVSO4Installed = 0
  248.     Case 2 '// MCINST_OS_OBJECT_EXISTS
  249.         IsVSO4Installed = 1
  250.     Case 3 '// MCINST_OS_OBJECT_NOT_FOUND
  251.         IsVSO4Installed = -2
  252.     '}
  253.     End Select
  254. '}
  255. End Function
  256. '--------------------------------------------------------------------------------
  257. ' To Support Retail products in Dashboard, we need to have a set of function
  258. ' that check for Retail product state (Expired/Enabled/Disabled) etc
  259. '--------------------------------------------------------------------------------
  260. '1 = Installed, 0 = Not Installed, -1 = Error
  261. '--------------------------------------------------------------------------------
  262. Function IsRetailVSOInstalled()
  263. '{
  264.     Dim bOldOfuscate, bRetail
  265.  
  266.     If g_localObjReg Is Nothing Then
  267.         IsRetailVSOInstalled = -1
  268.         Exit Function
  269.     End If
  270.  
  271.     bRetail = 0
  272.     bOldOfuscate = g_localObjReg.obfuscate
  273.     g_localObjReg.obfuscate = True
  274.     bRetail = g_localObjReg.RegQueryValue( CStr("HKLM\Software\McAfee.com\Agent\Apps\VSO"), CStr("Retail") )
  275.  
  276.     If 1 = bRetail Then
  277.         IsRetailVSOInstalled = 1
  278.     Else
  279.         IsRetailVSOInstalled = 0
  280.     End If
  281.  
  282.     g_localObjReg.obfuscate = bOldOfuscate
  283. '}
  284. End Function
  285. '////////////////////////////////////////////////////////////////////////////////////
  286. '// 1 = Expired, 0 = Not Expired
  287. '////////////////////////////////////////////////////////////////////////////////////
  288. Function IsRetailVSOExpired()
  289. '{
  290.     Dim    szExpDate
  291.  
  292.     If False = WillVSOProductExpire() Then
  293.         IsRetailVSOExpired = 0
  294.         Exit Function
  295.     End If
  296.  
  297.     If not IsValidObject( g_localObjInstaller ) Then
  298.         IsRetailVSOExpired = 1
  299.         Exit Function
  300.     End If
  301.         
  302.     szExpDate = ""
  303.     g_localObjInstaller.GetExpiryDate "HKLM\Software\McAfee.com\VirusScan Online", "Settings", szExpDate 
  304.  
  305.     If Len(szExpDate) <> 8 Then
  306.         IsRetailVSOExpired = 1
  307.         Exit Function
  308.     End If
  309.  
  310.     Dim szExpYear, szExpMonth, szExpDay
  311.     szExpYear = Left( szExpDate, 4 )
  312.     szExpMonth = Mid( szExpDate, 5, 2 )
  313.     szExpDay = Mid( szExpDate, 7, 2)
  314.  
  315.     Dim glExpYear, glExpMonth, glExpDay
  316.  
  317.     glExpYear  = CStr( szExpYear )
  318.     glExpMonth = CStr( szExpMonth )
  319.     glExpDay   = CStr( szExpDay )
  320.  
  321.     Dim actualExpiryDate
  322.     actualExpiryDate = DateSerial( glExpYear, glExpMonth, glExpDay )
  323.  
  324.     If False = IsDate( actualExpiryDate ) Then
  325.     '{
  326.         'Tampered Expiry setting
  327.         IsRetailVSOExpired = 1
  328.         Exit Function
  329.     '}
  330.     End If
  331.  
  332.     If DateDiff( "d", Date, actualExpiryDate ) >= 0 Then
  333.         IsRetailVSOExpired = 0
  334.     Else
  335.         IsRetailVSOExpired = 1
  336.     End If
  337.         
  338. '}
  339. End Function
  340. '////////////////////////////////////////////////////////////////////////////////////
  341. '// 
  342. '// IsRetailVSOEnabled(): Return Values.
  343. '//
  344. '// -1: Error Code
  345. '// 0: Application is not running
  346. '// 1: Application is running.
  347. '////////////////////////////////////////////////////////////////////////////////////
  348. Function IsRetailVSOEnabled()
  349. '{
  350.     Dim bOldOfuscate, dwState
  351.  
  352.     If g_localObjReg Is Nothing Then
  353.         IsRetailVSOEnabled = -1
  354.         Exit Function
  355.     End If
  356.  
  357.     dwState = 0
  358.  
  359.     bOldOfuscate = g_localObjReg.obfuscate
  360.  
  361.     g_localObjReg.obfuscate = True
  362.  
  363.     dwState = g_localObjReg.RegQueryValue( CStr("HKLM\Software\McAfee.com\Agent\Apps\VSO"), CStr("State") )
  364.  
  365.     If 1 = dwState Then
  366.         IsRetailVSOEnabled = 1
  367.     Else
  368.         IsRetailVSOEnabled = 0
  369.     End If
  370.     g_localObjReg.obfuscate = bOldOfuscate
  371.  
  372. '}
  373. End Function
  374. '////////////////////////////////////////////////////////////////////////////////////
  375. '// ScanNow()
  376. '// 
  377. '// -1: Error Code
  378. '//  0: Application could not be started.
  379. '//  1: Application is started.
  380. '////////////////////////////////////////////////////////////////////////////////////
  381. Function ScanNow()
  382. '{
  383.     Const CLSID_MCVSSHLD    = "{692E988D-1057-4c57-8078-26CF7AE54263}" 
  384.  
  385.     Dim sPath
  386.     
  387.     ScanNow = -1
  388.  
  389.     If not IsValidObject( g_localObjOS ) Then
  390.         Exit Function
  391.     End If
  392.  
  393.     If not IsValidObject( g_localObjFS ) Then
  394.         Exit Function
  395.     End If
  396.  
  397.     If g_localObjOS is nothing Or _
  398.         g_localObjFS is nothing Then
  399.     '{
  400.         Exit Function
  401.     '}
  402.     End If
  403.  
  404.     ScanNow = 0
  405.  
  406.     sPath = GetObjectPath( CLSID_MCVSSHLD, g_localObjOS, g_localObjFS )
  407.  
  408.     If "" <> sPath Then
  409.     '{
  410.         sPath = CStr(sPath & "\mcmnhdlr.exe")
  411.         If 0 = g_localObjOS.RunProgram( sPath, CStr(VSO_SCAN_CMD_ARG) ) Then
  412.             ScanNow = 1
  413.         End If
  414.     '}
  415.     End If
  416. '}
  417. End Function
  418. '////////////////////////////////////////////////////////////////////////////////////
  419. '// TODO: move it to a library module
  420. '////////////////////////////////////////////////////////////////////////////////////
  421. Function IsValidObject( myObj )
  422. '{    
  423.     IsValidObject = false
  424.     
  425.     if IsObject( myObj ) then
  426.         if not myObj is nothing then
  427.             IsValidObject = true
  428.         end if
  429.     end if
  430. '}
  431. End function
  432. '////////////////////////////////////////////////////////////////////////////////////
  433. '// TODO: move it to a library module
  434. '////////////////////////////////////////////////////////////////////////////////////
  435. sub FreeObject( ByRef myObj )
  436. '{
  437.     if IsValidObject( myObj ) then
  438.         set myObj = nothing
  439.     end if
  440. '}
  441. End sub
  442. '////////////////////////////////////////////////////////////////////////////////////
  443. '// Takes a "yyyymmdd" string and returns Date type
  444. '// TODO: move it to a library module
  445. '////////////////////////////////////////////////////////////////////////////////////
  446. Function ParseDate( sExpDate )
  447. '{
  448.  
  449.     Dim lExpMonth, lExpDay, lExpYear, dtExpDate
  450.  
  451.     If Len(sExpDate) < 8 Then
  452.         Exit Function
  453.     End If
  454.  
  455.     On Error Resume Next
  456.  
  457.     ParseDate = CDate( Mid( sExpDate, 5, 2 ) & "/" & Mid( sExpDate, 7 ) & "/" & Left( sExpDate, 4 ) )
  458.  
  459.     On Error Goto 0
  460. '}
  461. End Function
  462.  
  463.  
  464. '////////////////////////////////////////////////////////////////////////////////////
  465. '// Giridhar Desaraju - September 1st, 2004
  466. '// Formats the Date to "yyyymmdd" 
  467. '////////////////////////////////////////////////////////////////////////////////////
  468. Function FormatDate()
  469. '{
  470.     dim sDay, sMonth, sYear
  471.  
  472.     On Error Resume Next
  473.  
  474.     sDay = Day(Date)
  475.     if len(sDay) = 1 Then sDay = "0" & sDay
  476.  
  477.     sMonth = Month(Date)
  478.     if len(sMonth) = 1 Then sMonth = "0" & sMonth
  479.  
  480.     sYear = Year(Date)    
  481.     FormatDate = sYear & sMonth & sDay
  482.  
  483.     On Error Goto 0
  484. '}
  485. End Function
  486.  
  487.  
  488. Function IsAdminUser
  489. '{
  490.     IsAdminUser = false
  491.  
  492.     If not IsValidObject( g_localObjOS ) Then
  493.         Exit Function
  494.     End If
  495.     
  496.     IsAdminUser = g_localObjOS.IsAdministrator()
  497. '}
  498. end function 
  499. '// EOF
  500. '///////////////////////////////////////////////////////////